#include "SQLCaseExpr_Item.h"
#include "../../visitor/SQLASTVisitor.h"

SQLCaseExpr_Item::SQLCaseExpr_Item()
{
}

SQLCaseExpr_Item::~SQLCaseExpr_Item()
{

  // if (conditionExpr != NULL)
  // {

  //   delete conditionExpr;
  //   conditionExpr = NULL;
  // }

  // if (valueExpr != NULL)
  // {

  //   delete valueExpr;
  //   valueExpr = NULL;
  // }
}
SQLCaseExpr_Item::SQLCaseExpr_Item(SQLExpr_ptr theConditionExpr, SQLExpr_ptr theValueExpr)
{

  setConditionExpr(theConditionExpr);
  setValueExpr(theValueExpr);
}

SQLExpr_ptr SQLCaseExpr_Item::getConditionExpr()
{
  return conditionExpr;
}

void SQLCaseExpr_Item::setConditionExpr(SQLExpr_ptr theConditionExpr)
{
  if (theConditionExpr != NULL)
  {
    theConditionExpr->setParent(SharedObject(SQLCaseExpr_Item));
  }
  conditionExpr = theConditionExpr;
}

SQLExpr_ptr SQLCaseExpr_Item::getValueExpr()
{
  return valueExpr;
}

void SQLCaseExpr_Item::setValueExpr(SQLExpr_ptr theValueExpr)
{
  if (theValueExpr != NULL)
  {
    theValueExpr->setParent(SharedObject(SQLCaseExpr_Item));
  }
  valueExpr = theValueExpr;
}

void SQLCaseExpr_Item::accept0(SQLASTVisitor_ptr visitor)
{
  if (visitor->visit(SharedObject(SQLCaseExpr_Item)))
  {
    acceptChild(visitor, conditionExpr);
    acceptChild(visitor, valueExpr);
  }
  visitor->endVisit(SharedObject(SQLCaseExpr_Item));
}
